%搜索标准的头尾相衔3列式线路数据（起点、终点、值）例如坡道、曲线、限速；input1: 位置 m ;input2: 待查找的数据矩阵 N*3
%输入参数：位置 m；待查找的数据矩阵 N*3
function res = inquire_linedata(pos,data3cols)
data_size = size(data3cols,1);
res = 0;
%先判断在不在范围，目前只能处理递增的数据
if data3cols(1,1) < data3cols(end,2)
    if pos < data3cols(1,1) || pos > data3cols(end,2)
        return;
    end
else
    if pos > data3cols(1,1) || pos < data3cols(end,2)
        return;
    end
end

% %顺序查找，数据量不大时其实也挺快
% for i = 1:data_size
%     if pos >= data3cols(i,1) && pos < data3cols(i,2)
%         res = data3cols(i,3);
%         break;
%     end
% end

%二分查找
low = 1;
high = data_size;
index = 1;
while low < high
    mid = floor((low + high) / 2);
    if pos >= data3cols(mid,1)  %如果在后半区间
        if pos < data3cols(mid,2)
            index = mid;
            break;
        else
            low = mid + 1;
        end
    elseif pos < data3cols(mid,1) %如果在前半区间
        if pos > data3cols(mid-1,1)
            index = mid - 1;
            break;
        else
            high = mid - 1;
        end
    end
end
if low == high
    mid = low;
    if pos >= data3cols(mid,1) && pos <= data3cols(mid,2)
        index = mid;
    end
end
res = data3cols(index,3);

